package com.simple.manager;

/**
 * 管理器，没有什么好解释的，它的实例，负责对某些特定功能的对象，执行管理操作
 *
 * @param <K> 绑定用的键
 * @param <V> 被管理的对象
 */
public interface Manager<K, V> {

    /**
     * 注册被管理着
     *
     * @param k 绑定的键
     * @param v 被管理的对象
     */
    void register(K k, V v);

    /**
     * 将目标移出管理器
     *
     * @param k 绑定的键
     * @return 被管理的对象
     */
    V unregister(K k);

    /**
     * 获取被管理的对象
     *
     * @param k 绑定的键
     * @return 被管理的对象
     */
    V lookup(K k);

    /**
     * 清空管理器
     */
    void clear();
}
